# app/api/v1/routes.py
from fastapi import APIRouter, HTTPException, status
from sqlalchemy.orm import Session

from app.core.dependencies import get_database
from .services import Services
from . import schemas

# 创建当前版本的路由器实例
router = APIRouter()
services = Services()

@router.post("/tasks/process_tasks", response_model=schemas.ResponseMixTaskList)
async def process_tasks(
    request: schemas.RequestMixTaskList,
    db: Session = get_database()
    ):
    """任务列表处理。
    
    本接口为混合接口，可识别出库、入库、库内转移任务三种任务，使用同一接口进行任务下发。
    
    注意！确保发送任务类型为正确的整数值 (0-入库, 1-出货, 2-库内转移)，且任务类型正确。

    - **stacker_location**: 堆垛机当前位置 (格式: '0,x,y' - '0,层,列') 堆垛机始终使用0代表库区
    - **tasks**: 需要处理的任务列表
        - **task_no**: 任务号
        - **description**: 任务详情
            - **task_type**: 任务类型 (0-入库, 1-出货, 2-库内转移)
            - **start_or_gate_location**: 货物起点坐标或者出入口坐标 (格式: 'wh,x,y' - '库区,层,列')
            - **target_location**: 货物目标坐标 (格式: 'wh,x,y' - '库区,层,列')
    """
    try:
        # 这里可以添加数据处理逻辑
        processed_data_info = services.task_processing(db, request)
        if processed_data_info[0]:
            processed_data = processed_data_info[1]
        
        return {
            "message": "数据接收成功",
            "total_tasks_received": len(request.tasks),
            "data": processed_data
        }
    except Exception as e:
        raise HTTPException(
            status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
            detail=f"数据处理错误: {str(e)}"
        )